#ifndef CANDIDATEITEM_H
#define CANDIDATEITEM_H

#include "pinyinhandler.h" // 候选词数据结构

#include <QLabel>
#include <QMouseEvent>

class CandidateItem : public QLabel
{
    Q_OBJECT

public:
    // 构造：index（序号）、cand（候选词数据）、parent（父控件）
    explicit CandidateItem(int index, const PinyinCandidate &cand, QWidget *parent = nullptr);
    ~CandidateItem() override = default;

    // 获取当前候选词文本
    QString getCandidateText() const { return m_candidate.text; }

protected:
    // 鼠标事件重写（hover/点击）
    void enterEvent(QEvent *event) override;    // 鼠标进入：高亮
    void leaveEvent(QEvent *event) override;    // 鼠标离开：取消高亮
    void mousePressEvent(QMouseEvent *event) override; // 鼠标点击：发送选中信号
    void paintEvent(QPaintEvent *event) override;

signals:
    void candidateSelected(const QString &text); // 候选词选中信号

private:
    PinyinCandidate m_candidate;  // 候选词数据（文本+拼音）
    int m_index;                  // 候选词序号（1-7）
    QString m_defaultStyle;       // 默认样式
    QString m_hoverStyle;         // Hover样式
    QString m_selectedStyle;      // 选中样式
};

#endif // CANDIDATEITEM_H